package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.BaseBuildInfo;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface BaseBuildInfoMapper extends BaseMapper<BaseBuildInfo> {
    /**
     * 根据id查询组合方式
     *
     * @param id
     * @return
     */
    String getSortTypeById(String id);

    /**
     * 模糊查询自然幢信息列表
     *
     * @param zoneCode  地区编码
     * @param fuzzy     模糊查询参数
     * @param flowState 状态
     * @return 自然幢信息
     */
    List<BaseBuildInfo> fuzzySearch(@Param("zoneCode") String zoneCode, @Param("fuzzy") String fuzzy, @Param("flowState") String flowState,@Param("no") String  no);


    /**
     * 通过  buildName 查询 个数
     *
     * @param baseBuildInfo
     * @return
     */
    int getCountByBiuldName(BaseBuildInfo baseBuildInfo);

    /**
     * 根据自然幢名称和小区id查询数量
     *
     * @param buildName
     * @param regionNo
     * @return
     */
    List<BaseBuildInfo> getCountByBiuldNameAndRegionId(@Param("buildName") String buildName, @Param("regionNo") String regionNo, @Param("id") String id);

    /**
     * 根据自然幢名称,分区名称和小区id查询数量
     *
     * @param buildName
     * @param regionNo
     * @return
     */
    List<BaseBuildInfo> getCountByBiuldNameAndRegionIdAndSub(@Param("buildName") String buildName, @Param("regionNo") String regionNo, @Param("subRegionNo") String subRegionNo);

    /**
     * 根据小区ID模糊查询自然幢信息列表
     *
     * @param fuzzy     模糊查询参数
     * @param id        小区ID
     * @param flowState 状态
     * @return 自然幢信息
     */
    List<BaseBuildInfo> fuzzySearchByRegionId(@Param("fuzzy") String fuzzy, @Param("id") String id, @Param("flowState") String flowState);


    /**
     * 查询该小区下的最大值
     */
    String selectMaxBuildNo();

    /**
     * 自然幢的编号
     */
    String selectBuildNoFromid(String id);

    /**
     * 根据小区编号查询自然幢数量
     *
     * @param regionNo
     * @return
     */
    int getCountByRegionNo(String regionNo);

    List<BaseBuildInfo> findList(@Param("info") BaseBuildInfo info);

    /**
     * 模糊查询自然幢列表
     *
     * @param id         小区ID
     * @param fuzzyParam 模糊查询字段
     * @param zoneCode   地区编码
     * @param flowState  状态
     * @return 自然幢列表
     */
    List<BaseBuildInfo> fuzzyGetList(@Param("fuzzyParam") String fuzzyParam, @Param("zoneCode") String zoneCode, @Param("flowState") String flowState, @Param("id") String id, @Param("creater") String creater);


    /**
     * 查询是否存在分区
     *
     * @param subRegionNo
     * @return
     */
    int selectSubRegion(String subRegionNo);

    /**
     * 查询该小区的物业企业
     */
    int selectEnvironNo(String environNo);

    /**
     * 查询该小区的开发企业
     *
     * @param developNo
     * @return
     */
    int selectDevelopNo(String developNo);

    /**
     * 业主销户列表
     */
    List<BaseBuildInfo> getListAndOwnerOut(BaseBuildInfo baseBuildInfo);

    /**
     * 模糊查询业主销户列表
     */
    List<BaseBuildInfo> fuzzySearchByRegionNo(String regionNo, String fuzzy);

    /**
     * 查询自然幢列表，用在批量退款
     *
     * @param baseBuildInfo
     * @return
     */
    List<BaseBuildInfo> getListToBatchRef(BaseBuildInfo baseBuildInfo);

    /**
     * 根据小区ID查询自然幢列表
     *
     * @param regionId    小区ID
     * @param subRegionId 分区ID
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getBuildList(@Param("regionId") String regionId, @Param("subRegionId") String subRegionId);

    /**
     * 根据小区ID查询审核通过的自然幢列表
     *
     * @param regionId    小区ID
     * @param subRegionId 分区ID
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getPassBuildList(@Param("regionId") String regionId, @Param("subRegionId") String subRegionId);

    /**
     * 查询小区有没有该银行
     *
     * @param bankId
     * @return
     */
    int selectCountBank(String bankId);

    int selectSub(String id);

    int selectSubAll(String id);

    /**
     * 查询是否有在用的开发企业
     *
     * @return
     */
    int selectCountDeve(@Param("no") String no, @Param("regionNo") String regionNo);

    /**
     * 查询是否有在用的物业企业
     *
     * @return
     */
    int selectCountenv(@Param("no") String no, @Param("regionNo") String regionNo);

    /**
     * 模糊查询自然幢审核列表
     *
     * @param baseBuildInfo 查询实体
     * @return 待审核列表
     */
    List<BaseBuildInfo> fuzzyAuditList(BaseBuildInfo baseBuildInfo);

    List<BaseBuildInfo> selectSubRegionAll(String id);

    /**
     * 修改财务编号
     *
     * @param id
     * @param financeCode
     * @return
     */
    int updateFineNo(@Param("id") String id, @Param("financeCode") String financeCode);

    /**
     * 查询列表
     *
     * @param baseBuildInfo
     * @return
     */
    List<BaseBuildInfo> getBuildingReq(BaseBuildInfo baseBuildInfo);

    List<BaseBuildInfo> getListSubmit(BaseBuildInfo baseBuildInfo);

    /**
     * 物业企业
     *
     * @param id
     * @return
     */
    int getCountByCommit(String id);

    /**
     * 查询该自然幢的开发企业
     *
     * @param businessId
     * @param oldValue
     * @return
     */
    List<BaseBuildInfo> selectByRegion(@Param("businessId") String businessId, @Param("oldValue") String oldValue);

    /**
     * 修改自然妆的开发企业
     *
     * @param developNo
     * @param regionNo
     * @return
     */
    int updateDevelop(@Param("developNo") String developNo, @Param("regionNo") String regionNo);

    /**
     * 修改物业企业
     *
     * @param environNo
     * @param regionNo
     * @return
     */
    int updateEnviron(@Param("environNo") String environNo, @Param("regionNo") String regionNo);

    /**
     * 物业企业
     *
     * @param businessId
     * @param oldValue
     * @return
     */
    List<BaseBuildInfo> selectByRegionPro(@Param("businessId") String businessId, @Param("oldValue") String oldValue);

    /**
     * 查询小区下的自然妆
     *
     * @param id
     * @return
     */
    List<BaseBuildInfo> selectByRegionNo(String id);

    /**
     * 修改自然妆的zoneCode
     *
     * @param id
     * @param zoneCode
     * @return
     */
    int updateZoneCode(@Param("id") String id, @Param("zoneCode") String zoneCode);

    /**
     * 查询详情中文
     *
     * @param id
     * @return
     */
    BaseBuildInfo getInfoBuild(String id);

    /**
     * 查看字典类型有没有被使用
     *
     * @param id
     * @return
     */
    int selectType(String id);

    /**
     * 修改自然幢
     *
     * @param id
     * @return
     */
    int updateState(String id);

    /**
     * 根据自然幢名称查询自然幢信息
     * @param buildName 自然幢名称
     * @param subRegionNo 分区编号
     * @param regionId 小区ID
     * @return 自然幢信息
     */
    BaseBuildInfo getInfoByName(@Param("buildName") String buildName,@Param("subRegionNo") String subRegionNo,@Param("regionId")String regionId);

    /**
     * 自然幢是不是同一个承办银行
     * @param buildIds
     * @return
     */
    List<Integer> selectByBankId(String buildIds);
    /**
     * 外网获取自然幢列表
     *
     * @param regionId 小区ID
     * @return 自然幢列表
     */
    List<BaseBuildInfo> getOuterNetBuildList(String regionId);
}
